#ifndef COLOR_H
#define COLOR_H

#include <stdio.h>
#include <stdarg.h>

/*-------- 默认值标识符 --------*/
#define COLOR_FG_DEFAULT "\033[39m"  // 默认前景色
#define COLOR_BG_DEFAULT "\033[49m"  // 默认背景色
#define STYLE_NORMAL     ""          // 无样式效果

/*-------- 前景色定义 --------*/
#define COLOR_FG_RED     "\033[31m"
#define COLOR_FG_GREEN   "\033[32m"
#define COLOR_FG_YELLOW  "\033[33m"
#define COLOR_FG_BLUE    "\033[34m"
#define COLOR_FG_WHITE    "\033[37m"
#define COLOR_FG_BLACK    "\033[30m"

/*-------- 背景色定义 --------*/ 
#define COLOR_BG_RED     "\033[41m"
#define COLOR_BG_GREEN   "\033[42m"
#define COLOR_BG_YELLOW  "\033[43m"
#define COLOR_BG_BLUE    "\033[44m"

/*-------- 文字样式定义 --------*/
#define STYLE_BOLD       "\033[1m"
#define STYLE_UNDERLINE  "\033[4m"

/*-------- 全局重置 --------*/
#define COLOR_RESET_ALL  "\033[0m"

/*-------- 颜色样式结构体 --------*/
typedef struct {
    const char *fg;    // 前景色（默认COLOR_FG_DEFAULT）
    const char *bg;    // 背景色（默认COLOR_BG_DEFAULT）
    const char *style; // 文字样式（默认STYLE_NORMAL）
} ColorStyle;


// 预定义主题枚举
typedef enum {
    THEME_DEFAULT,    // 默认样式
    THEME_ERROR,      // 错误提示（红底白字）
    THEME_WARNING,    // 警告提示（黄底黑字）
    THEME_SUCCESS,    // 成功提示（绿底黑字）
    THEME_DEBUG,      // 调试信息（蓝底白字）
    THEME_CUSTOM      // 自定义主题起始位置
} Theme;



/*-------- 核心功能函数 --------*/
extern void color_print(ColorStyle style, const char *format, ...);

extern const ColorStyle* theme_get(Theme theme);

#endif // COLOR_H